var infoWin;
var tableDom;
/**
 * 封装便捷的撞题
 * @param {AMap.Map} map
 * @param {Array} event
 * @param {Object} content
 */
function openInfoWin(map, event, content) {
    if (!infoWin) {
        infoWin = new AMap.InfoWindow({
            isCustom: true,  //使用自定义窗体
            offset: new AMap.Pixel(130, 100)
        });
    }

    var x = event.offsetX;
    var y = event.offsetY;
    var lngLat = map.containerToLngLat(new AMap.Pixel(x, y));

    if (!tableDom) {
        let infoDom = document.createElement('div');
        infoDom.className = 'info';
        tableDom = document.createElement('table');
        infoDom.appendChild(tableDom);
        infoWin.setContent(infoDom);
    }

    var trStr = '';
    for (var name in content) {
        var val = content[name];
        trStr +=
            '<tr>' +
                '<td class="label">' + name + '</td>' +
                '<td>&nbsp;</td>' +
                '<td class="content">' + val + '</td>' +
            '</tr>'
    }

    tableDom.innerHTML = trStr;
    infoWin.open(map, lngLat);
}

function closeInfoWin() {
    if (infoWin) {
        infoWin.close();
    }
}

var map = Loca.create('container', {
    mapStyle: 'amap://styles/midnight',
//    features: ['bg', 'road'],
    pitch: 50,
    zoom: 6,
    center: [110.473168, 32.993015]
});

map.on('mapload', function () {
    map.getMap().plugin(['AMap.ControlBar'], function () {
        var controlBar = new AMap.ControlBar();
        map.getMap().addControl(controlBar);
    });
});

$.ajax({
	type : 'POST',
	url : '/getAllOrganization',
	async : false,
	success : function(data) {
		 var layer = Loca.visualLayer({
			 eventSupport: true,
		        container: map,
		        type: 'point',
		        // 棱柱类型仅 3D 模式下支持。
		        shape: 'prism',
		        // 设定棱柱体顶点数量
		        vertex: 4
		 });

		layer.setData(data,{
	        lnglat: function(res) {
	            var row = res.value;
	            return [row.longitude, row.latitude];
	        },
	        value: function(res) {
	            return res.hot;
	        }
		});
	    layer.setOptions({
	        unit: 'meter',
	        style: {
	            radius: 20000,
	            opacity: 0.9,
	            gap: 300,
	            height: {
	                key: 'hot',
	                value: [0, 50000]
	            },
	            // 顶边颜色
	            color: {
	                key: 'hot',
	                scale: 'quantile',
	                value:  [
	                    '#2c7bb6',
	                    '#abd9e9',
	                    '#ffffbf',
	                    '#fdae61',
	                    '#d7191c'
	                ]
	            },
	            // 旋转角度，单位弧度
	            rotate: Math.PI / 180 * 45
	        },
	        selectStyle:{
	           color: '#ffe30a'
	        },
	        light: {
	            // 环境光
	            ambient: {
	                // 光照颜色
	                color: '#ffffff',
	                // 光照强度，范围 [0, 1]
	                intensity: 0.6
	            },
	            // 平行光
	            directional: {
	                color: '#ffffff',
	                // 光照方向，是指从地面原点起，光指向的方向。
	                // 数组分别表示 X 轴、Y 轴、Z 轴。
	                // 其中 X 正向朝东、Y 正向朝南、Z 正向朝地下。
	                direction: [1, -1.5, 2],
	                intensity: 0.6
	            }
	        }
	    });
	    layer.on('click', function (ev) {
	        var raw = ev.rawData;
	        window.open("/company/"+raw.name);
	    });
	    layer.on('mousemove', (ev) => {
	        openInfoWin(map.getMap(), ev.originalEvent, {
	        	'企业': ev.rawData.name,
	        	'热度': ev.rawData.hot,
	            '地址': ev.rawData.address,
	            '电话': ev.rawData.phone,
	            '邮箱': ev.rawData.email
	        });
	    });
	    layer.render();
	}
});